package reflect;

import reflect.annotations.AutoRunMethod;

import java.lang.reflect.Method;

public class Test4 {
    public static void main(String[] args) throws Exception {
//        Class cls = Class.forName("reflect.Person");
//        Object obj = cls.newInstance();
//
//        Method[] methods = cls.getMethods();
//
//        for (Method method : methods){
//            boolean mark = method.isAnnotationPresent(AutoRunMethod.class);
//            if (mark){
//                AutoRunMethod arm = method.getAnnotation(AutoRunMethod.class);
//                int value = arm.value();
//                for (int i = value; i > 0; i--){
//                    method.invoke(obj);
//                }
//            }
//        }

//        Class cls = Class.forName("reflect.Person");
//        Object obj = cls.newInstance();
//        Method[] methods = cls.getMethods();
//
//        for (Method method : methods){
//            boolean mark = method.isAnnotationPresent(AutoRunMethod.class);
//            if (mark){
//                AutoRunMethod arm = method.getAnnotation(AutoRunMethod.class);
//                int value = arm.value();
//                for (int i = value; i > 0; i--){
//                    method.invoke(obj);
//                }
//            }
//        }

//        Class cls = Class.forName("reflect.Person");
//        Object obj = cls.newInstance();
//        Method[] methods = cls.getMethods();
//
//        for (Method method: methods){
//            boolean arm = method.isAnnotationPresent(AutoRunMethod.class);
//            if(arm){
//                AutoRunMethod ar = method.getAnnotation(AutoRunMethod.class);
//                int value = ar.value();
//                System.out.println("有注释的方法为：" + method.getName() + "使用次数为：" + value);
//                for (int i = value; i > 0; i--){
//                    method.invoke(obj);
//                }
//
//            }
//
//        }

//        Class cls = Class.forName("reflect.Person");
//        Object obj = cls.newInstance();
//        Method[] methods = cls.getMethods();
//
//        for (Method method: methods){
//            boolean arm = method.isAnnotationPresent(AutoRunMethod.class);
//            if (arm){
//                AutoRunMethod ar = method.getAnnotation(AutoRunMethod.class);
//                int value = ar.value();
//                System.out.println("有注释的方法：" + method.getName() + "使用次数：" + value);
//                for (int i = value; i > 0; i--){
//                    method.invoke(obj);
//                }
//            }
//        }

//        Class cls = Class.forName("reflect.Person");
//        Object obj = cls.newInstance();
//        Method[] methods = cls.getMethods();
//        for (Method method: methods){
//            boolean arm = method.isAnnotationPresent(AutoRunMethod.class);
//            if (arm){
//                AutoRunMethod ar = method.getAnnotation(AutoRunMethod.class);
//                int value = ar.value();
//                System.out.println("有注释的方法为：" + method.getName() + "注释了" + value + "次");
//                for (int i = value; i > 0; i--){
//                    method.invoke(obj);
//                }
//            }

//        }

        Class cls = Class.forName("reflect.Person");
        Object obj = cls.newInstance();
        Method[] methods = cls.getMethods();
        for (Method method: methods){
            boolean arm = method.isAnnotationPresent(AutoRunMethod.class);
            if (arm){
                AutoRunMethod ar = method.getAnnotation(AutoRunMethod.class);
                int value = ar.value();
                System.out.println("有注释的方法为：" + method.getName() + "注释次数为：" + value + "次");
                for (int i = value; i > 0; i--){
                    method.invoke(obj);
                }
            }
        }

















    }
}
